#ifndef _DrvDataBuffer_hpp_
#define _DrvDataBuffer_hpp_

#include <Fw/FPrimeBasicTypes.hpp>
#include <Fw/Types/Serializable.hpp>

namespace Drv {

class DataBuffer : public Fw::SerializeBufferBase {
  public:
    enum {
        DATA_BUFFER_SIZE = 256,
        SERIALIZED_TYPE_ID = 1010,
        SERIALIZED_SIZE = DATA_BUFFER_SIZE + sizeof(FwBuffSizeType)
    };

    DataBuffer(const U8* args, FwSizeType size);
    DataBuffer();
    DataBuffer(const DataBuffer& other);
    virtual ~DataBuffer();
    DataBuffer& operator=(const DataBuffer& other);

    DEPRECATED(FwSizeType getBuffCapacity() const, "Use getCapacity() instead");
    FwSizeType getCapacity() const;

    U8* getBuffAddr();
    const U8* getBuffAddr() const;

  private:
    U8 m_data[DATA_BUFFER_SIZE];  // packet data buffer
};
}  // namespace Drv

#endif
